#ifndef __PID_H_
#define __PID_H_

#include <stdio.h>
#include <stdlib.h>

//位置式PID
typedef struct
{
    float kp;           // 比例系数
    float ki;           // 积分系数
    float kd;           // 微分系数
    float err_last;     // 上次误差
    float err_sum;      // 误差累计
    float result;
    float max_out;
    float min_out;
}pid_pos_typedef;
void pid_pos_init(pid_pos_typedef* pid, float kp, float ki, float kd);
float pid_pos_calc(pid_pos_typedef* pid, float currVal, float objVal);

//增量式PID
// typedef struct
// {
//     float kp;           // 比例系数
//     float ki;           // 积分系数
//     float kd;           // 微分系数
//     float err_last;     // 上一次的误差
//     float err_pree;     // 上二次的误差
//     float result;
// }pid_delta_typedef;

// void pid_delta_init(pid_delta_typedef* pid, float kp, float ki, float kd);
// float pid_delta_calc(pid_delta_typedef* pid, float currVal);

#endif
